﻿using System.Windows.Forms;
using StockLib;
using StockLib.Data;
using StockLib.Quote;

namespace StockUI
{
    public class StockApplication
    {
        /// <summary>
        /// 单例实例
        /// </summary>
        private static StockApplication _instance = null;

        /// <summary>
        /// 构造函数
        /// </summary>
        private StockApplication()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
        }

        /// <summary>
        /// 访问单例
        /// </summary>
        /// <returns></returns>
        public static StockApplication Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new StockApplication();

                return _instance;
            }
        }

        public void Init()
        {
            // 读取配置文件
            StockProfile.Instance.Load();

            // 初始化数据库
            StockData.Instance.Init();

            // 读取证券信息，代码表、财务、除权等
            StockContainer.Instance.Load();

            // 读取分类板块
            StockBlockGroupClass.Instance.Load();

            // 读取预定义板块
            StockBlockGroupRegular.Instance.Load();

            // 读取自设板块
            StockBlockGroupCustom.Instance.Load();

            // 读取标签数据
            StockTabContainer.Instance.Load();

            // 创建行情接收器窗口
            StockReceiver.Instance.CreateWindow();
        }

        public void Exit()
        {
            // 销毁行情接收器窗口
            StockReceiver.Instance.DestroyWindow();

            // 保存标签数据
            StockTabContainer.Instance.Save();

            // 保存自设板块
            StockBlockGroupCustom.Instance.Save();

            // 保存预定义板块
            StockBlockGroupRegular.Instance.Save();

            // 保存分类板块
            StockBlockGroupClass.Instance.Save();

            // 保存证券信息，代码表、财务、除权等
            StockContainer.Instance.Save();

            // 释放数据库
            StockData.Instance.Release();

            // 保存配置文件
            StockProfile.Instance.Save();
        }

        public void Run()
        {
            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(FormMain.Instance);
        }
    }
}
